import configparser
import json
import sys

# 提示用户输入JSON格式的cookie数据
print("请输入JSON格式的cookie数据（按回车后输入，完成后按Ctrl+D（Linux/Mac）或Ctrl+Z（Windows）并回车结束）：")
lines = []
while True:
    try:
        line = input()
        # 仅添加非空行
        if line.strip():
            lines.append(line.strip())
    except EOFError:
        break
    except KeyboardInterrupt:
        print("\n输入被中断，程序退出。")
        sys.exit(1)
    except Exception as e:
        print(f"\n输入过程中发生错误：{str(e)}")
        sys.exit(1)

# 将输入的行合并为完整的JSON字符串
json_input = ''.join(lines).strip()

# 检查输入是否为空
if not json_input:
    print("错误：未输入任何有效数据，请重试。")
    sys.exit(1)

try:
    # 解析输入的JSON数据
    cookie_data = json.loads(json_input)

    # 验证输入是否为列表
    if not isinstance(cookie_data, list):
        print("错误：输入的JSON数据必须是一个列表。")
        sys.exit(1)

    # 读取config.ini文件
    config = configparser.ConfigParser()
    if not config.read('config.ini', encoding='utf-8'):
        print("错误：无法找到或读取config.ini文件，请确保文件存在于当前目录。")
        sys.exit(1)

    # 确保cookies节存在
    if 'cookies' not in config:
        config['cookies'] = {}

    # 更新cookie值
    updated = False
    for cookie in cookie_data:
        if not isinstance(cookie, dict) or 'name' not in cookie or 'value' not in cookie:
            print(f"警告：跳过无效的cookie项：{cookie}")
            continue

        name = cookie['name'].lower()
        value = cookie['value']

        if name == 'access_token':
            config['cookies']['access_token'] = value
            updated = True
        elif name == 'hmaccount':
            config['cookies']['hmaccount'] = value
            updated = True
        elif name == 'hm_lvt_7640497445529879f7be1821661cc9e3':
            config['cookies']['hm_lvt'] = value
            updated = True
        elif name == 'hm_lpvt_7640497445529879f7be1821661cc9e3':
            config['cookies']['hm_lpvt'] = value
            updated = True

    if not updated:
        print("警告：没有找到匹配的cookie字段，未更新配置文件。")
        sys.exit(0)

    # 将更新后的配置写回config.ini文件
    with open('config.ini', 'w', encoding='utf-8') as configfile:
        config.write(configfile)

    print("配置文件更新成功！")
except json.JSONDecodeError as e:
    print(f"错误：JSON格式不正确，请检查输入数据。错误详情：{str(e)}")
except KeyError as e:
    print(f"错误：配置文件缺少必要的字段：{str(e)}")
except Exception as e:
    print(f"发生未知错误：{str(e)}")
    sys.exit(1)